app:
  title: Backstage Uffizzi Environment
  baseUrl: ${UFFIZZI_URL}

organization:
  name: My Company

backend:
  baseUrl: ${UFFIZZI_URL}
  auth:
    keys:
      # random mock key for Uffizzi deployments
      - secret: 5TXvdjVZFxF7qf9K5RAYRDoGrLzJooqa
  listen:
    port: 7007
  database:
    client: pg
    connection:
      host: ${POSTGRES_HOST}
      port: ${POSTGRES_PORT}
      user: ${POSTGRES_USER}
      password: ${POSTGRES_PASSWORD}
  cors:
    origin: ${UFFIZZI_URL}
    methods: [GET, HEAD, PATCH, POST, PUT, DELETE]
    credentials: true
  csp:
    connect-src: ["'self'", 'http:', 'https:']
    img-src: ["'self'", 'data:', 'https://cdnjs.cloudflare.com']
    # Content-Security-Policy directives follow the Helmet format: https://helmetjs.github.io/#reference
    # Default Helmet Content-Security-Policy values can be removed by setting the key to false

auth:
  environment: production
  providers: {}
  proxy:
    enabled: true
    url: https://demo.backstage.io/api/auth

catalog:
  rules:
    - allow:
        - Component
        - API
        - Resource
        - System
        - Domain
        - Location
  locations:
    - type: url
      target: https://github.com/backstage/backstage/blob/${REF_NAME}/packages/catalog-model/examples/all.yaml

    - type: url
      target: https://github.com/backstage/backstage/blob/${REF_NAME}/plugins/techdocs-backend/examples/documented-component-uffizzi/catalog-info.yaml

    - type: url
      target: https://github.com/backstage/backstage/blob/${REF_NAME}/packages/catalog-model/examples/acme-corp.yaml
      rules:
        - allow: [User, Group]

    - type: url
      target: https://github.com/backstage/backstage/blob/${REF_NAME}/plugins/scaffolder-backend/sample-templates/all-templates.yaml
      rules:
        - allow: [Template]

proxy:
  endpoints:
    '/circleci/api':
      target: https://circleci.com/api/v1.1
      headers:
        Circle-Token: ${CIRCLECI_AUTH_TOKEN}

    '/jenkins/api':
      target: http://localhost:8080
      headers:
        Authorization: ${JENKINS_BASIC_AUTH_HEADER}

    '/travisci/api':
      target: https://api.travis-ci.com
      changeOrigin: true
      headers:
        Authorization: ${TRAVISCI_AUTH_TOKEN}
        travis-api-version: '3'

    '/newrelic/apm/api':
      target: https://api.newrelic.com/v2
      headers:
        X-Api-Key: ${NEW_RELIC_REST_API_KEY}

    '/newrelic/api':
      target: https://api.newrelic.com
      headers:
        X-Api-Key: ${NEW_RELIC_USER_KEY}

    '/pagerduty':
      target: https://api.pagerduty.com
      headers:
        Authorization: Token token=${PAGERDUTY_TOKEN}

    '/buildkite/api':
      target: https://api.buildkite.com/v2/
      headers:
        Authorization: ${BUILDKITE_TOKEN}

    '/sentry/api':
      target: https://sentry.io/api/
      allowedMethods: ['GET']
      headers:
        Authorization: ${SENTRY_TOKEN}

    '/ilert':
      target: https://api.ilert.com
      allowedMethods: ['GET', 'POST', 'PUT']
      allowedHeaders: ['Authorization']
      headers:
        Authorization: ${ILERT_AUTH_HEADER}

    '/airflow':
      target: https://your.airflow.instance.com/api/v1
      headers:
        Authorization: ${AIRFLOW_BASIC_AUTH_HEADER}

    '/gocd':
      target: https://your.gocd.instance.com/go/api
      allowedMethods: ['GET']
      allowedHeaders: ['Authorization']
      headers:
        Authorization: Basic ${GOCD_AUTH_CREDENTIALS}

    '/dynatrace':
      target: https://your.dynatrace.instance.com/api/v2
      headers:
        Authorization: 'Api-Token ${DYNATRACE_ACCESS_TOKEN}'

techdocs:
  builder: 'local' # Alternatives - 'external'
  generator:
    runIn: 'local'
    # dockerImage: my-org/techdocs # use a custom docker image
    # pullImage: true # or false to disable automatic pulling of image (e.g. if custom docker login is required)
  publisher:
    type: 'local' # Alternatives - 'googleGcs' or 'awsS3' or 'azureBlobStorage' or 'openStackSwift'. Read documentation for using alternatives.

dynatrace:
  baseUrl: https://your.dynatrace.instance.com

nomad:
  addr: 0.0.0.0

# Score-cards sample configuration.
scorecards:
  jsonDataUrl: https://raw.githubusercontent.com/Oriflame/backstage-plugins/main/plugins/score-card/sample-data/
  wikiLinkTemplate: https://link-to-wiki/{id}

sentry:
  organization: my-company

rollbar:
  organization: my-company
  # NOTE: The rollbar-backend & accountToken key may be deprecated in the future (replaced by a proxy config)
  accountToken: my-rollbar-account-token

lighthouse:
  baseUrl: http://localhost:3003

kubernetes:
  serviceLocatorMethod:
    type: 'multiTenant'
  clusterLocatorMethods:
    - type: 'config'
      clusters:
        - url: ${UFFIZZI_CLUSTER_APISERVER}
          name: uffizzi
          authProvider: 'serviceAccount'

kafka:
  clientId: backstage
  clusters:
    - name: cluster
      dashboardUrl: https://akhq.io/
      brokers:
        - localhost:9092

allure:
  baseUrl: http://localhost:5050/allure-docker-service

integrations:
  github:
    - host: github.com
      token: ${GITHUB_TOKEN}
  ### Example for how to add your GitHub Enterprise instance using the API:
  # - host: ghe.example.net
  #   apiBaseUrl: https://ghe.example.net/api/v3
  #   token: ${GHE_TOKEN}
  ### Example for how to add your GitHub Enterprise instance using raw HTTP fetches (token is optional):
  # - host: ghe.example.net
  #   rawBaseUrl: https://ghe.example.net/raw
  #   token: ${GHE_TOKEN}
  gitlab:
    - host: gitlab.com
      token: ${GITLAB_TOKEN}
  ### Example for how to add a bitbucket cloud integration
  # bitbucketCloud:
  #   - username: ${BITBUCKET_USERNAME}
  #     appPassword: ${BITBUCKET_APP_PASSWORD}
  ### Example for how to add your bitbucket server instance using the API:
  # - host: server.bitbucket.com
  #   apiBaseUrl: server.bitbucket.com
  #   username: ${BITBUCKET_SERVER_USERNAME}
  #   appPassword: ${BITBUCKET_SERVER_APP_PASSWORD}
  azure:
    - host: dev.azure.com
      token: ${AZURE_TOKEN}
  #  googleGcs:
  #    clientEmail: 'example@example.com'
  #    privateKey: ${GCS_PRIVATE_KEY}
  awsS3:
    - host: amazonaws.com
      accessKeyId: ${AWS_ACCESS_KEY_ID}
      secretAccessKey: ${AWS_SECRET_ACCESS_KEY}

costInsights:
  engineerCost: 200000
  engineerThreshold: 0.5
  products:
    computeEngine:
      name: Compute Engine
      icon: compute
    cloudDataflow:
      name: Cloud Dataflow
      icon: data
    cloudStorage:
      name: Cloud Storage
      icon: storage
    bigQuery:
      name: BigQuery
      icon: search
    events:
      name: Events
      icon: data
  metrics:
    DAU:
      name: Daily Active Users
      default: true
    MSC:
      name: Monthly Subscribers
  currencies:
    engineers:
      label: 'Engineers 🛠'
      unit: 'engineer'
    usd:
      label: 'US Dollars 💵'
      kind: 'USD'
      unit: 'dollar'
      prefix: '$'
      rate: 1
    carbonOffsetTons:
      label: 'Carbon Offset Tons ♻️⚖️s'
      kind: 'CARBON_OFFSET_TONS'
      unit: 'carbon offset ton'
      rate: 3.5
    beers:
      label: 'Beers 🍺'
      kind: 'BEERS'
      unit: 'beer'
      rate: 4.5
    pintsIceCream:
      label: 'Pints of Ice Cream 🍦'
      kind: 'PINTS_OF_ICE_CREAM'
      unit: 'ice cream pint'
      rate: 5.5
pagerduty:
  eventsBaseUrl: 'https://events.pagerduty.com/v2'
jenkins:
  instances:
    - name: default
      baseUrl: https://jenkins.example.com
      username: backstage-bot
      apiKey: 123456789abcdef0123456789abcedf012

azureDevOps:
  host: dev.azure.com
  token: my-token
  organization: my-company

apacheAirflow:
  baseUrl: https://your.airflow.instance.com

gocd:
  baseUrl: https://your.gocd.instance.com

permission:
  enabled: true

search:
  query:
    pageLimit: 50
